// 主类
public class Main {
    public static void main(String[] args) {
        System.out.println("=== 测试绍兴鸭 ===");
        ShaoxingDuck shaoxing = new ShaoxingDuck();
        shaoxing.fly();
        shaoxing.quack();
        shaoxing.setHeavy(2.5);  // 使用父类方法
        shaoxing.setHeavy(2.5, 90);  // 使用重载方法（养殖90天）
        shaoxing.layEggs();  // 调用特有方法

        System.out.println("\n=== 测试樱桃谷鸭 ===");
        CherryValleyDuck cherryValley = new CherryValleyDuck("灰白色", 3.2);
        cherryValley.fly();
        cherryValley.quack();
        cherryValley.setHeavy(3.0);  // 使用父类方法
        cherryValley.setHeavy(3.0, 1.15);  // 使用重载方法（饲料转化率1.15）
        cherryValley.growFast();  // 调用特有方法

        System.out.println("\n=== 多态演示 ===");
        Duck[] ducks = {shaoxing, cherryValley};
        for (Duck duck : ducks) {
            duck.displayInfo();
            duck.fly();
            duck.quack();
            System.out.println("---");
        }

        System.out.println("\n=== 测试带参数的构造方法 ===");
        ShaoxingDuck customShaoxing = new ShaoxingDuck("麻色", 2.8);
        customShaoxing.displayInfo();

        System.out.println("\n=== 测试方法重写和重载 ===");
        testDuckMethods();

        System.out.println("\n=== 鸭子品种特性比较 ===");
        compareDuckBreeds();
    }

    // 额外的测试方法
    public static void testDuckMethods() {
        System.out.println("--- 方法测试开始 ---");

        Duck myDuck = new ShaoxingDuck("褐色", 2.0);
        myDuck.setHeavy(2.3); // 调用父类方法

        // 向下转型以调用重载方法
        if (myDuck instanceof ShaoxingDuck) {
            ShaoxingDuck shaoxing = (ShaoxingDuck) myDuck;
            shaoxing.setHeavy(2.3, 120); // 调用重载方法
            shaoxing.layEggs(); // 调用特有方法
        }

        System.out.println("--- 方法测试结束 ---");
    }

    // 比较不同鸭子品种的特性
    public static void compareDuckBreeds() {
        System.out.println("--- 鸭子品种特性比较 ---");

        ShaoxingDuck shaoxing = new ShaoxingDuck();
        CherryValleyDuck cherryValley = new CherryValleyDuck();

        System.out.println("\n绍兴鸭特点:");
        shaoxing.displayInfo();
        shaoxing.layEggs();

        System.out.println("\n樱桃谷鸭特点:");
        cherryValley.displayInfo();
        cherryValley.growFast();

        System.out.println("--- 比较结束 ---");
    }
}